// 自动忽略
const data1 = {
  a: "test1",
  b: undefined,
  c: Symbol("test2"),
  fn: function () {
    return true;
  },
};
console.log(JSON.stringify(data1)); // {"a":"test1"}

//数组返回null
const data2 = [
  "test1",
  undefined,
  function aa() {
    return true;
  },
  Symbol("test2"),
];
console.log(JSON.stringify(data2)); // ["test1",null,null,null]

//返回undefined
const a1 = JSON.stringify(function a() {
  console.log("test1");
});
console.log("a1：", a1); // a1： undefined
const a2 = JSON.stringify(undefined);
console.log("a2：", a2); // a2： undefined
const a3 = JSON.stringify(Symbol("test2"));
console.log("a3：", a3); // a3： undefined

// Date
console.log(JSON.stringify({ now: new Date() })); // {"now":"2022-09-12T00:17:54.812Z"}

// NaN 和 Infinity 以及null
console.log(JSON.stringify(NaN)); // null
console.log(JSON.stringify(Infinity)); // null
console.log(JSON.stringify(null)); // null

//转换为对应的原始值。
console.log(JSON.stringify([new Number(2), new String("test"), new Boolean(false)])); // [2,"test",false]

//仅序列化可枚举属性
const a = JSON.stringify(
  Object.create(null, {
    test1: { value: "test1", enumerable: false },
    test2: { value: "test2", enumerable: true },
  })
);
console.log(a); // {"test2":"test2"}

// BigInt 报错
// const c = {
//   test: 1n,
// };
// console.log(JSON.stringify(c));
